package algo3.grupo3.modelo;


public class Bombita extends ObjetoAnimado {
	private double delayMovimiento;
	private Bomba bomba;
	public static double DELAY_MOVIMIENTO_INICIAL= 300.0;

	public Bombita(){
		this.durabilidad = 1;
		this.delayMovimiento = DELAY_MOVIMIENTO_INICIAL;//medido en milisegundos.
		this.posicion = null;
		this.bomba = new Bomba();
	}//fin del constructor
	
	public void obtenerArticulo( Articulo unArticulo ){
		if(unArticulo != null){
			unArticulo.modificarHabilidades(this);
		}
	}//fin de obtenerArticulo
	
	public Bomba plantarBomba(){
		Bomba bombaColocar =  this.bomba.clone();
		if(this.posicion== null)
			return null;
		if(this.posicion.hayUnOcupanteSuperpuesto())
			return null;
		this.posicion.compartir(bombaColocar);
		return bombaColocar;
	}//fin de plantarBomba
	
	public boolean estaVivo(){
		return (durabilidad == 1);
	}
	
	public void moverArriba(){
		Casilla cSuperior = this.posicion.obtenerCasillaSuperior();		
		if(cSuperior != null && (!cSuperior.estaOcupada())){
			this.posicion.removerOcupante();
			cSuperior.ocupar(this);
		}
		this.obtenerArticulo(this.posicion.obtenerArticulo());
		if(this.posicion.obtenerArticulo() != null){
			if(this.posicion.obtenerArticulo().esSalida() != true){
				this.posicion.removerArticulo();
			}
		}
	}//fin de moverArriba
	
	public void moverAbajo(){
		Casilla cInferior = this.posicion.obtenerCasillaInferior();		
		if(cInferior != null && (!cInferior.estaOcupada())){
			this.posicion.removerOcupante();
			cInferior.ocupar(this);
		}
		this.obtenerArticulo(this.posicion.obtenerArticulo());
		if(this.posicion.obtenerArticulo() != null){
			if(this.posicion.obtenerArticulo().esSalida() != true){
				this.posicion.removerArticulo();
			}
		}
		
	}//fin de moverAbajo
	
	public void moverDerecha(){
		Casilla cDerecha = this.posicion.obtenerCasillaDerecha();		
		if(cDerecha != null && (!cDerecha.estaOcupada())){
			this.posicion.removerOcupante();
			cDerecha.ocupar(this); 
		}
		this.obtenerArticulo(this.posicion.obtenerArticulo());
		if(this.posicion.obtenerArticulo() != null){
			if(this.posicion.obtenerArticulo().esSalida() != true){
				this.posicion.removerArticulo();
			}
		}
	}//fin de moverDerecha
	
	public void moverIzquierda(){
		Casilla cIzquierda = this.posicion.obtenerCasillaIzquierda();		
		if(cIzquierda != null && (!cIzquierda.estaOcupada())){
			this.posicion.removerOcupante();
			cIzquierda.ocupar(this); 
		}
		this.obtenerArticulo(this.posicion.obtenerArticulo());
		if(this.posicion.obtenerArticulo() != null){
			if(this.posicion.obtenerArticulo().esSalida() != true){
				this.posicion.removerArticulo();
			}
		}
	}//fin de moverIzquierda
	

	@Override
	public boolean esAtravesable() {
		return true;
	}//fin de esAtravesable
	
	public void actualizarEstado(double tiempoCiclo){
		if(this.posicion== null)
			return;
		if(this.posicion.tieneArticulo() == true){
			this.obtenerArticulo(this.posicion.obtenerArticulo());
		}
	}//fin de actualizarEstado

	public Bomba obtenerBomba() {
		return this.bomba;
	}//fin de obtenerBomba

	public double obtenerDelayMovimiento() {
		return this.delayMovimiento;
	}//fin de obtenerDelayMovimiento

	public void setearDelayMovimiento(double nuevoDelay) {
		this.delayMovimiento = nuevoDelay;
		
	}//fin de setearDelayMovimiento
	
}//fin de Bombita
